|
Linux Security Modules (LSM)はGNU/Linuxシステム(Linuxディストリビューション)において、任意の1つのセキュリティ実装のみをサポートすることを回避し、同時に様々なコンピュータセキュリティモデルをサポートするためLinuxカーネルに追加されたフレームワークである。GNU General Public Licenseの条項に従いライセンスされ、Linuxカーネルバージョン2.6の標準的な機能の一部となっている。、SELinux、そして TOMOYO Linuxは現在メインライン(メインストリーム)カーネル(リーナス・トーバルズにより管理されるカーネルソースコードツリーで公式のLinuxカーネル)に存在するLSMベースのセキュリティモジュールである。 カーネルソースコードディレクトリのトップにある security/ というディレクトリの下にカーネル内処理に関するサブルーチン群が、include/linux/security.h ヘッダファイルに主要な関数・構造体のプロトタイプ宣言や有益なマクロ、インライン関数がある。名称より誤解を受けることが多いが、2011年現在におけるLSMはローダブル・カーネル・モジュール (LKM) ではなく、カーネル内に静的にリンクされる。またLSMの上に実装される各種セキュリティモジュールは以前はLKMとして実装可能であったが、現在では原則不可能である(後述)。 "Linux Security Module"と呼称する文書・Webページが散見されるが、正しくはLinux Security Modulesである。 == 設計 == LSMは、Linuxカーネルへの変更を可能な限り抑えつつ、強制アクセス制御をうまく実装するためのあらゆる機能を提供するという、特定の用途のために設計された。LSMはのようなシステムコールへの干渉 (System call interposition) のアプローチを取ることを避ける。なぜならば、そのようなツールはマルチプロセッサシステムにおけるスケーラビリティに欠け、(TOCTTOU; 確認プロセスから実行プロセスまでの時間差による競合状態)攻撃に脆弱である。代わりにLSMは、ユーザ空間ツールが最終的にinodeやタスク制御ブロック (task control blocks, task_struct) のような重要な内部カーネルオブジェクトにアクセスする際のカーネル内のすべての呼び出し箇所に「フック」(モジュールの上位呼び出し)を挿入する。 プロジェクトはメインストリームカーネルへの巨大かつ複雑な変更は避けるため、アクセス制御の問題解決のスコープに限定している。LSMは一般的な「フック」すなわち「上位呼び出し」のメカニズムを意図しているのではなく、をサポートするものでもない。 従来からLinux環境で利用されてきたセキュリティモジュール (PAM, ) はユーザー認証やパーミッション制御のみに特化しているが、LSMはそれよりもカバーする範囲は広い。 LSMのアクセス制御の目標はシステム監査 (System audit) の問題と非常に近い関連性があるが少し相違点もある。監査はアクセス試行を全てを記録するということを要求する。LSMはそのようなことは実現しない。なぜなら、カーネル内の「ちょっとした回り道」によるシステムコール失敗を検知し、関連する重要オブジェクトが取得される前にエラーコードを返すには、さらに非常に多くのフックが必要となるためである。 LSMの設計はUSENIX Security 2002において論文''Linux Security Modules: General Security Support for the Linux Kernel''(Linux Security Modules: Linuxカーネルにおける標準的なセキュリティサポート)〔 〕と言う形で発表された。同じカンファレンスにおいて、''Using CQUAL〔CQual 〕 for Static Analysis of Authorization Hook Placement''(フック配置の認容の静的な解析のためのCQUALの使用)〔 〕という、必要なすべてのフックが実際にカーネルに挿入されたことを検証するカーネルソースコードの静的な自動解析に関する研究論文も発表されている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Linux Security Modules」の詳細全文を読む スポンサード リンク
|